Chmod
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
En informatique, sous Unix ou les systèmes d'exploitation de type Unix (également appelés « *nix »), chmod (abréviation de change mode) est un appel système (de la norme POSIXcite-ref-1[1]) ainsi que la commande correspondante qui permet de changer les droits d'accès d'un fichier ou d'un répertoire.
Contents
• Histoire
• Options
• Modes
• Exemples
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Histoire
Permission de changer les droits
Un utilisateur a le droit de faire un chmod sur un fichier :
• s'il est root ;
• ou s'il est le propriétaire du fichier en question.
Utilisation
Les options passées à la commande chmod sont indiquées comme ceci :
chmod options modes fichiers
Pour un fichier : chmod [u g o a] [+ - =] [r w x] nom_du_fichier
Pour le contenu d'un répertoire (de façon récursive) : chmod -R [u g o a] [+ - =] [r w x] nom_du_répertoire
Options
chmod a un certain nombre d'options qui peuvent modifier le résultat. Certaines de ces options sont :
• -c, --changes : comme verbeux (-v) mais n'affiche que les changements effectués.
• --no-preserve-root : ne traite pas / (la racine du système de fichiers) spécialement (option par défaut).
• --preserve-root : échec du traitement récursif (-R) sur / (la racine du système de fichiers).
• -f, --silent, --quiet : supprime la plupart des messages d'erreur.
• -v, --verbose : mode verbeux. Affiche la liste de tous les fichiers en cours de modification.
• -R, --recursive : change les modes de tous les fichiers dans les sous-répertoires de manière récursive.
• --help : affiche l'aide de la commande chmod.
• --version : affiche les informations sur la version de chmod.
Modes
Pour chaque fichier donné, les permissions s'appliquent au propriétaire du fichier (code ’u’ comme user), au groupe d’utilisateurs du fichier (’g’ comme group) ou aux autres utilisateurs (’o’ comme others). Pour appliquer les modifications à tous en une seule fois, on utilise le code ’a’ comme all :
• u propriétaire (user)
• g groupe (group)
• o les autres (others)
• a tous (all)
Les modes peuvent être spécifiés de deux façons, avec des lettres ou avec des nombres en octal. Pour les lettres, il existe les opérateurs de changement d'état + et - pour ajouter ou retirer un type de droit aux droits courants, et l'opérateur = pour les écraser. Pour l'octal, il faut additionner les nombres pour chaque type de possesseur.
Les permissions sont (valeurs octales entre parenthèses) :
• r (4) : autorisation de lecture
• w (2) : autorisation d'écriture
• x (1) : autorisation d'exécution. La permission d'exécution régit également l'accès à un répertoire : si l'exécution n'est pas autorisée sur un répertoire, on ne peut faire un chdir (commande cd) sur ce répertoire.
| Correspondances de représentation des droits | Correspondances de représentation des droits | Correspondances de représentation des droits | Correspondances de représentation des droits |
|---|---|---|---|
| Droit | Valeur alphanumérique | Valeur octale | Valeur binaire |
| aucun droit | --- | 0 | 000 |
| exécution seulement | --x | 1 | 001 |
| écriture seulement | -w- | 2 | 010 |
| écriture et exécution | -wx | 3 | 011 |
| lecture seulement | r-- | 4 | 100 |
| lecture et exécution | r-x | 5 | 101 |
| lecture et écriture | rw- | 6 | 110 |
| tous les droits (lecture, écriture et exécution) | rwx | 7 | 111 |
Exemples
• chmod u+rw mon_fichier donne au propriétaire les droits en écriture et en lecture au fichier mon_fichier.
• chmod -R a+rx mon_dossier donne à tous les utilisateurs les droits en lecture et en exécution à tout ce que contient le dossier mon_dossier. Le "a" est facultatif : chmod -R +rx mon_dossier fonctionne tout aussi bien.
• chmod 755 mon_dossier donne au propriétaire tous les droits, aux membres du groupe et aux autres les droits de lecture et d'accès. C'est un droit utilisé traditionnellement sur les répertoires.
• chmod 644 mon_fichier donne au propriétaire les droits de modification et lecture, aux membres du groupe et aux autres uniquement les droits de lecture. C'est un droit utilisé traditionnellement sur les fichiers.
Modes spéciaux
Il existe trois modes spéciaux couramment utilisés : le sticky bit (noté t) et les SETUID et SETGID bits (notés s).
Autres chmod
Fonction C
chmod
chmodcite-ref-0-2-0[2] existe dans la bibliothèque standard C. Elle a la même fonction que la commande Unix.
int chmod(const char *path, int amode) ;
Où :
• path est le nom du fichier à modifier.
• amode est le nouvel attribut à mettre au fichier.
• chmod retourne la valeur 0 (opération réussie) ou -1 (erreur).
fchmod
int fchmod(int descripteur du fichier, mode_t mode)
La différence entre chmod et fchmod, c'est que chmod prend le chemin du fichier comme argument (ce qui est lisible par un être humain, exemple : /tmp/toto.txt), alors que fchmod prend le descripteur de fichier comme argumentcite-ref-0-2-1[2].
Fonction Perl
$cnt = chmod 0644, 'fichier1', 'fichier2';
$cnt = chmod 0644, @liste;
Fonction PHP
chmodcite-ref-4[4] existe dans la bibliothèque standard PHP. Elle a la même fonction que la commande Unix et les mêmes paramètres que la fonction C.
cacls et attrib de Microsoft
Sous Windows NT, caclscite-ref-6[6] est l'utilitaire plus complet en ligne de commande équivalent à chmod et chown.
Notes et références
cite-note-11. ↑ (en) « POSIX Interface Library: liboskit_posix.a ».
cite-note-0-22. 2024(en) « chmod(2) » , sur man7.org, 23 juillet 2024 (consulté le 19 avril 2025)
cite-note-33. ↑ (en) « chmod » , sur Perldoc Browser (consulté le 19 avril 2025)
cite-note-44. ↑ « chmod » , sur php.net (consulté le 19 avril 2025)
cite-note-55. ↑ 2023« attrib » , sur Microsoft Learn, 7 octobre 2023 (consulté le 19 avril 2025)
cite-note-66. ↑ 2025« cacls » , sur Microsoft Learn, 25 mars 2025 (consulté le 19 avril 2025)
Voir aussi
Liens externes
• Droits d'accès aux fichiers sous Linux
• Le man officiel et en français de la commande chmod
• Changer les droits sur des extensions ou sur des répertoires seulement et de manière récursive
• Portail de la sécurité des systèmes d'information